Metadata হল একটি ফাইল বা ডিরেক্টরির সম্পর্কিত অতিরিক্ত তথ্য যা ফাইলের প্রকৃত কন্টেন্ট ছাড়াও তার বৈশিষ্ট্য নির্দেশ করে। এই তথ্যটি সাধারণত ফাইলের সাইজ, তৈরির তারিখ, সংশোধন তারিখ, অধিকার (permissions) এবং মালিকানার মতো মৌলিক বৈশিষ্ট্যগুলির মধ্যে সীমাবদ্ধ থাকে। ফাইলের Metadata হ্যান্ডলিং খুবই গুরুত্বপূর্ণ, বিশেষ করে যখন আপনি ফাইল সিস্টেমের সাথে কাজ করছেন, বা ফাইলের পঠনযোগ্যতা, নিরাপত্তা এবং অন্যান্য বৈশিষ্ট্য সম্পর্কিত ডেটা ব্যবস্থাপনা করতে চান।
Apache Commons IO লাইব্রেরি FileUtils এবং অন্যান্য ইউটিলিটি ক্লাসের মাধ্যমে ফাইলের metadata হ্যান্ডলিং এর জন্য সহজ ও কার্যকরী উপায় সরবরাহ করে।
এই নিবন্ধে আমরা দেখব কিভাবে Apache Commons IO লাইব্রেরি ব্যবহার করে ফাইলের metadata যেমন ফাইলের সাইজ, মডিফিকেশন সময়, এবং অধিকার পরিচালনা করা যায়।
Metadata হল একটি ফাইলের সম্পর্কে তথ্য যা ফাইলের কন্টেন্ট ছাড়াও তার সম্পর্কিত অন্যান্য বৈশিষ্ট্য প্রদান করে। ফাইলের কিছু গুরুত্বপূর্ণ metadata হতে পারে:
Apache Commons IO লাইব্রেরি দিয়ে ফাইলের মেটাডেটা সহজেই অ্যাক্সেস এবং হ্যান্ডলিং করা যায়। এটি FileUtils এবং File ক্লাসের মাধ্যমে এই কার্যক্রমগুলো সম্পাদন করতে সহায়তা করে।
ফাইলের সাইজ (বাইটে) পাওয়া জন্য FileUtils.sizeOf()
মেথড ব্যবহার করা হয়। এটি একটি File অবজেক্ট গ্রহণ করে এবং ফাইলের সাইজ রিটার্ন করে।
উদাহরণ: ফাইলের সাইজ পাওয়া
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
public class FileMetadataExample {
public static void main(String[] args) throws IOException {
File file = new File("example.txt");
// Get file size
long size = FileUtils.sizeOf(file);
System.out.println("File Size: " + size + " bytes");
}
}
এখানে:
FileUtils.sizeOf(file)
মেথডটি ফাইলের সাইজ রিটার্ন করবে (বাইটে)।আউটপুট:
File Size: 1024 bytes
ফাইলের last modified তারিখ পাওয়া যায় File.lastModified()
মেথড ব্যবহার করে। এটি ফাইলের সংশোধন হওয়া সময় রিটার্ন করে (মিলিসেকেন্ডে)।
উদাহরণ: ফাইলের লাস্ট মডিফিকেশন তারিখ পাওয়া
import java.io.File;
import java.text.SimpleDateFormat;
public class LastModifiedExample {
public static void main(String[] args) {
File file = new File("example.txt");
// Get last modified date
long lastModified = file.lastModified();
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
System.out.println("Last Modified: " + sdf.format(lastModified));
}
}
এখানে:
file.lastModified()
ফাইলের লাস্ট মডিফাইড টাইমস্ট্যাম্প রিটার্ন করবে এবং SimpleDateFormat
ব্যবহার করে তারিখের ফরম্যাট করা হয়েছে।আউটপুট:
Last Modified: 12/15/2024 14:30:00
ফাইলের পূর্ণ পাথ পাওয়া যায় File.getAbsolutePath()
মেথড ব্যবহার করে।
উদাহরণ: ফাইলের পাথ পাওয়া
import java.io.File;
public class FilePathExample {
public static void main(String[] args) {
File file = new File("example.txt");
// Get the absolute file path
String filePath = file.getAbsolutePath();
System.out.println("File Path: " + filePath);
}
}
এখানে:
file.getAbsolutePath()
ফাইলের পূর্ণ পাথ রিটার্ন করবে।আউটপুট:
File Path: /home/user/documents/example.txt
ফাইলের অধিকার (read, write, execute) পাওয়া এবং সেট করা যায় File.canRead()
, File.canWrite()
, এবং File.canExecute()
মেথড ব্যবহার করে।
উদাহরণ: ফাইলের অধিকার পাওয়া
import java.io.File;
public class FilePermissionsExample {
public static void main(String[] args) {
File file = new File("example.txt");
// Check file permissions
boolean canRead = file.canRead();
boolean canWrite = file.canWrite();
boolean canExecute = file.canExecute();
System.out.println("Can Read: " + canRead);
System.out.println("Can Write: " + canWrite);
System.out.println("Can Execute: " + canExecute);
}
}
এখানে:
file.canRead()
, file.canWrite()
, এবং file.canExecute()
মেথডগুলো ফাইলের রিড, রাইট এবং এক্সিকিউট অনুমতি যাচাই করে।আউটপুট:
Can Read: true
Can Write: true
Can Execute: false
ফাইলের মালিকানা সম্পর্কিত তথ্য পাওয়া যায় Files.getOwner()
মেথড ব্যবহার করে, যা Java 7 এবং পরবর্তী সংস্করণে java.nio.file API তে অন্তর্ভুক্ত।
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.attribute.UserPrincipal;
public class FileOwnerExample {
public static void main(String[] args) {
try {
File file = new File("example.txt");
UserPrincipal owner = Files.getOwner(Paths.get(file.getPath()));
System.out.println("File Owner: " + owner.getName());
} catch (IOException e) {
e.printStackTrace();
}
}
}
এখানে:
Files.getOwner()
ফাইলের মালিকের তথ্য প্রদান করবে।আউটপুট:
File Owner: username
Apache Commons IO লাইব্রেরি FileUtils ক্লাসের মাধ্যমে ফাইলের metadata হ্যান্ডলিংয়ের আরও কিছু কার্যকরী মেথড প্রদান করে। যেমন:
readFileToString()
: ফাইলের কন্টেন্ট পড়া।writeStringToFile()
: ফাইলে ডেটা লেখা।copyFile()
: ফাইল কপি করা।delete()
: ফাইল মুছে ফেলা।এটি ফাইলের metadata হ্যান্ডলিং এবং ফাইল পরিচালনায় অতিরিক্ত সুবিধা প্রদান করে।
Apache Commons IO লাইব্রেরি ফাইলের metadata যেমন সাইজ, সংশোধন তারিখ, অধিকার, মালিকানা ইত্যাদি হ্যান্ডলিংয়ের জন্য অনেক শক্তিশালী ইউটিলিটি সরবরাহ করে। এর মাধ্যমে আপনি সহজেই ফাইলের বৈশিষ্ট্যগুলো যাচাই করতে, প্রয়োজন অনুযায়ী ফাইল ম্যানিপুলেশন করতে এবং ফাইলের নিরাপত্তা নিশ্চিত করতে পারেন। FileUtils, File, এবং IOUtils ক্লাসের মেথডগুলো ব্যবহার করে এই কাজগুলো দ্রুত এবং কার্যকরীভাবে করা সম্ভব।
File Metadata হল ফাইলের সম্পর্কিত অতিরিক্ত তথ্য যা ফাইলের মূল কনটেন্ট ছাড়াও তার বৈশিষ্ট্য, কার্যকারিতা এবং পরিচালনা সম্পর্কিত আরও তথ্য ধারণ করে। এটি ফাইলের বিশেষ তথ্য যেমন সাইজ, সৃষ্টি সময়, মডিফিকেশন সময়, মালিক, এক্সটেনশন, পাথ, এবং অন্যান্য প্রপার্টি সংরক্ষণ করে।
Apache Commons IO লাইব্রেরি ফাইল মেটাডেটার সাথে কাজ করতে বিভিন্ন কার্যকরী ইউটিলিটি ক্লাস সরবরাহ করে। ফাইলের মেটাডেটা সংগ্রহ করা প্রয়োজনীয় হতে পারে যখন আপনাকে ফাইল সিস্টেমে কোনও ফাইলের বিষয়ে বিশদ তথ্য প্রয়োজন হয়, যেমন ফাইলের মালিকানা, তারিখ, টাইপ ইত্যাদি।
File Metadata একটি ফাইলের অতিরিক্ত তথ্য যা সাধারণত ফাইলের কনটেন্টের বাইরে থাকে এবং তার আচার-ব্যবহার এবং পরিচালনা সম্পর্কিত হয়। এই মেটাডেটার মধ্যে অন্তর্ভুক্ত থাকতে পারে:
.txt
, .jpg
, .pdf
ইত্যাদি)।এছাড়াও, ফাইলের ক্রিয়েটর, ফাইলের লোকেশন, ফাইলের টাইপ ইত্যাদি মেটাডেটা হিসেবেও ধারণ করা যেতে পারে।
File Metadata ফাইল সিস্টেমের অপারেশনে গুরুত্বপূর্ণ ভূমিকা পালন করে এবং এটি বিভিন্ন ব্যবহারিক পরিস্থিতিতে প্রয়োজন হতে পারে, যেমন:
ফাইলের মেটাডেটা ব্যবহার করে আপনি দ্রুত জানতে পারেন কোন ফাইলটি বড় বা ছোট, কোন ফাইলটি সর্বশেষ পরিবর্তিত হয়েছে, কোন ফাইলটি এখনও ব্যবহৃত হচ্ছে ইত্যাদি। এটি ফাইল ম্যানেজমেন্ট সিস্টেমের মধ্যে বিভিন্ন অপারেশনকে আরও কার্যকরী এবং দ্রুত করতে সাহায্য করে।
ফাইলের মেটাডেটা দ্বারা আপনি একটি নির্দিষ্ট সময়ের মধ্যে তৈরি বা সংশোধিত ফাইলগুলো সহজেই ফিল্টার করতে পারেন। উদাহরণস্বরূপ, আপনি একটি ডিরেক্টরিতে সমস্ত .txt
ফাইল খুঁজে বের করতে পারেন যেগুলো শেষ ৭ দিন ধরে পরিবর্তিত হয়নি।
ফাইলের মেটাডেটা, যেমন অনুমতি এবং মালিকানা, ফাইলের নিরাপত্তা নিশ্চিত করতে সাহায্য করে। এটি নির্ধারণ করতে সাহায্য করে যে ফাইলটি কে অ্যাক্সেস করতে পারে এবং কে না পারে, যা একটি সিস্টেমে নিরাপত্তা ব্যবস্থার গুরুত্বপূর্ণ অংশ।
ফাইল ব্যাকআপ প্রক্রিয়ায় মেটাডেটা অত্যন্ত গুরুত্বপূর্ণ। যখন আপনি ব্যাকআপ বা রিস্টোর প্রক্রিয়া সম্পন্ন করবেন, তখন ফাইলের সঠিক সময় এবং পরিবর্তন হিসাব রাখা জরুরি, যাতে শুধুমাত্র প্রয়োজনীয় ফাইল রিস্টোর করা যায় এবং পুরনো বা অপ্রয়োজনীয় ফাইল বাদ দেওয়া যায়।
ফাইলের মেটাডেটা ব্যবহার করে আপনি ফাইলের অডিট ট্রেইল তৈরি করতে পারেন। এটি বিশেষভাবে গুরুত্বপূর্ণ যখন আপনার সিস্টেমে অনেক ফাইল ম্যানিপুলেশন হচ্ছে এবং আপনি জানতে চান কিভাবে এবং কখন ফাইলগুলি পরিবর্তিত হয়েছে।
Apache Commons IO লাইব্রেরি FileUtils
এবং FileSystemUtils
এর মতো ক্লাস ব্যবহার করে ফাইলের মেটাডেটা সংগ্রহ করতে সাহায্য করে।
FileUtils
ক্লাসটি ব্যবহার করে আপনি ফাইলের আকার, মডিফিকেশন সময় এবং আরও অনেক মেটাডেটা সহজেই অ্যাক্সেস করতে পারেন।
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
public class FileMetadataExample {
public static void main(String[] args) {
File file = new File("path/to/your/file.txt");
// Get file size
long fileSize = FileUtils.sizeOf(file);
System.out.println("File size: " + fileSize + " bytes");
// Get file last modified time
long lastModified = file.lastModified();
System.out.println("Last modified time: " + lastModified);
}
}
এখানে:
FileUtils.sizeOf(file)
মেথডটি ফাইলের আকার বাইটে রিটার্ন করে।file.lastModified()
মেথডটি ফাইলের মডিফিকেশন টাইম (এপক টাইমস্ট্যাম্পে) রিটার্ন করে।FileSystemUtils
ক্লাসটি ফাইল সিস্টেমের উন্নত ম্যানিপুলেশন জন্য ব্যবহৃত হয়, যেমন ডিস্কের মোট স্পেস, ফাইল সিস্টেমের ধরণ ইত্যাদি।
import org.apache.commons.io.FileSystemUtils;
public class FileSystemUtilsExample {
public static void main(String[] args) {
try {
// Get available free space on the disk
long freeSpace = FileSystemUtils.freeSpaceKb("C:/");
System.out.println("Free space: " + freeSpace + " KB");
} catch (IOException e) {
e.printStackTrace();
}
}
}
এখানে:
FileSystemUtils.freeSpaceKb()
মেথডটি নির্দিষ্ট ড্রাইভ বা ডিস্কে ফ্রি স্পেসের পরিমাণ রিটার্ন করে।ফাইলের মেটাডেটা অত্যন্ত গুরুত্বপূর্ণ, কারণ এটি ফাইল সিস্টেম অপটিমাইজেশন, ফাইল সিকিউরিটি, ডেটা ম্যানেজমেন্ট এবং ব্যাকআপ প্রক্রিয়ায় গুরুত্বপূর্ণ ভূমিকা পালন করে। ফাইলের সঠিক মেটাডেটা থাকার কারণে আপনি ফাইলগুলোর ওপর কার্যকরভাবে নিয়ন্ত্রণ করতে পারেন এবং সিস্টেমের কাজের গতি বাড়াতে সহায়তা করতে পারেন।
File Metadata একটি ফাইলের অতিরিক্ত তথ্য যা তার কনটেন্ট ছাড়াও ফাইলের বৈশিষ্ট্য, সময়, এক্সটেনশন, মালিকানা এবং অনুমতি সম্পর্কিত আরও গুরুত্বপূর্ণ তথ্য ধারণ করে। Apache Commons IO লাইব্রেরি ফাইল মেটাডেটা সংগ্রহ এবং পরিচালনা করার জন্য কার্যকরী ক্লাস সরবরাহ করে, যা ডেভেলপারদের ফাইল সিস্টেম অপারেশন এবং ম্যানিপুলেশনকে আরও শক্তিশালী এবং সাশ্রয়ী করে তোলে। FileUtils এবং FileSystemUtils ক্লাসের মাধ্যমে আপনি সহজেই ফাইলের আকার, মডিফিকেশন সময়, স্পেস এবং অন্যান্য গুরুত্বপূর্ণ মেটাডেটা সংগ্রহ করতে পারেন, যা ফাইল সিস্টেম পরিচালনায় সহায়ক।
Apache Commons IO লাইব্রেরি ফাইল এবং ডিরেক্টরি সম্পর্কিত কার্যাবলী সহজ এবং কার্যকরী করার জন্য বিভিন্ন টুল সরবরাহ করে, তবে ফাইল পারমিশন এবং মালিকানা (Owner) চেক করার জন্য Apache Commons IO সরাসরি কোনো নির্দিষ্ট API সরবরাহ করে না। তবে, আপনি Java NIO (New Input/Output) বা Java IO লাইব্রেরি ব্যবহার করে ফাইল পারমিশন এবং মালিকানা চেক করতে পারেন এবং Apache Commons IO এর অন্যান্য ফিচারগুলোর সাথে এটি একত্রে ব্যবহার করতে পারেন।
Java NIO (New Input/Output) লাইব্রেরি, যা Java 7 থেকে অন্তর্ভুক্ত, আপনাকে ফাইল পারমিশন এবং ফাইল মালিকানা চেক করার জন্য উন্নত ফিচার সরবরাহ করে। আপনি Files ক্লাসের getPosixFilePermissions() এবং getOwner() মেথড ব্যবহার করে ফাইলের পারমিশন এবং মালিকানা চেক করতে পারেন।
File.permission চেক করতে, আপনি Files.getPosixFilePermissions() ব্যবহার করতে পারেন, যা Set ফেরত দেয় এবং এতে ফাইলের বিভিন্ন পারমিশন (read, write, execute) থাকে।
import java.nio.file.*;
import java.nio.file.attribute.*;
import java.io.IOException;
import java.util.Set;
public class FilePermissionCheck {
public static void main(String[] args) {
try {
// ফাইলের পাথ নির্ধারণ করা
Path path = Paths.get("path/to/your/file.txt");
// ফাইলের পারমিশন পাওয়া
Set<PosixFilePermission> permissions = Files.getPosixFilePermissions(path);
// পারমিশন প্রিন্ট করা
System.out.println("File permissions:");
for (PosixFilePermission permission : permissions) {
System.out.println(permission);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
এখানে:
আউটপুট (যেমন ফাইলটির পারমিশন হতে পারে):
File permissions:
OWNER_READ
OWNER_WRITE
OWNER_EXECUTE
GROUP_READ
GROUP_EXECUTE
ফাইল মালিকানা চেক করার জন্য আপনি Files.getOwner() মেথড ব্যবহার করতে পারেন। এটি ফাইলের মালিকের নাম ফেরত দেয়।
import java.nio.file.*;
import java.nio.file.attribute.*;
import java.io.IOException;
public class FileOwnerCheck {
public static void main(String[] args) {
try {
// ফাইলের পাথ নির্ধারণ করা
Path path = Paths.get("path/to/your/file.txt");
// ফাইলের মালিকানা পাওয়া
UserPrincipal owner = Files.getOwner(path);
// মালিকের নাম প্রিন্ট করা
System.out.println("File owner: " + owner.getName());
} catch (IOException e) {
e.printStackTrace();
}
}
}
এখানে:
আউটপুট:
File owner: yourusername
যদিও Java IO লাইব্রেরি Posix ফাইল সিস্টেমের পারমিশন সরাসরি হ্যান্ডেল করে না, তবে আপনি File ক্লাসের setReadable(), setWritable(), এবং setExecutable() মেথডগুলির মাধ্যমে ফাইলের পারমিশন নির্ধারণ করতে পারেন। তবে এই মেথডগুলি পারমিশন সেট করে, check করতে নয়।
import java.io.File;
public class FilePermissionCheck {
public static void main(String[] args) {
// ফাইলের পাথ নির্ধারণ করা
File file = new File("path/to/your/file.txt");
// ফাইলের পারমিশন চেক করা
System.out.println("Can read: " + file.canRead());
System.out.println("Can write: " + file.canWrite());
System.out.println("Can execute: " + file.canExecute());
}
}
এখানে:
আউটপুট:
Can read: true
Can write: true
Can execute: false
Apache Commons IO লাইব্রেরি ফাইল পারমিশন চেক করার জন্য সরাসরি কোনও ফিচার সরবরাহ না করলেও, আপনি Java IO এর File ক্লাস এবং Apache Commons IO এর অন্যান্য ইউটিলিটিগুলির মাধ্যমে কার্যকরী ফাইল পারমিশন এবং মালিকানা ম্যানেজমেন্ট করতে পারেন। এটি আপনার কাজকে আরও কার্যকর এবং সহজ করতে সাহায্য করবে।
এই প্রক্রিয়াগুলো আপনাকে ফাইলের পারমিশন এবং মালিকানা চেক করতে সহায়তা করবে এবং আপনি যে ফাইলটি পরিচালনা করছেন তার সঠিক অনুমতি এবং মালিকানা জানতে পারবেন।
Apache Commons IO লাইব্রেরি আপনাকে Java এর স্ট্যান্ডার্ড File API এর সাথে এক্সটেনশন হিসেবে আরও শক্তিশালী এবং সহজ টুলস প্রদান করে। এর মধ্যে দুটি গুরুত্বপূর্ণ কাজ হল ফাইলের শেষ পরিবর্তনের সময় (Last Modified Time) এবং ফাইল সাইজ চেক করা। এই কাজগুলি সাধারণত ফাইল সিস্টেমে ফাইলের তথ্য যাচাই করার জন্য ব্যবহার করা হয়।
Apache Commons IO লাইব্রেরিতে FileUtils ক্লাসটি ফাইলের Last Modified Time এবং File Size বের করার জন্য সরাসরি মেথড সরবরাহ করে।
এখানে আমরা দেখবো কিভাবে আপনি FileUtils ব্যবহার করে এই দুটি কার্যক্রম সম্পন্ন করতে পারেন।
Last Modified Time হল সেই সময় যখন একটি ফাইল শেষবারের মতো পরিবর্তিত হয়েছিল। এটি একটি গুরুত্বপূর্ণ বৈশিষ্ট্য, কারণ এটি ফাইলের সর্বশেষ আপডেট সম্পর্কে তথ্য প্রদান করে।
FileUtils ক্লাসে lastModified()
মেথডটি ফাইলের Last Modified Time বের করার জন্য ব্যবহৃত হয়।
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
public class LastModifiedExample {
public static void main(String[] args) {
// Specify the file
File file = new File("example.txt");
// Get the last modified time of the file
long lastModifiedTime = FileUtils.lastModified(file);
// Print the last modified time
System.out.println("Last modified time: " + lastModifiedTime);
}
}
এখানে:
FileUtils.lastModified(file)
মেথডটি নির্দিষ্ট ফাইলের last modified time ফিরিয়ে দেয়, যা milliseconds হিসেবে দেওয়া হয়।System.out.println()
মেথডের মাধ্যমে আমরা ফাইলের last modified time প্রিন্ট করেছি।নোট: এই মেথডটি long
টাইপের সময় ফিরিয়ে দেয়, যা milliseconds-এ হয়। আপনি যদি সময়টি পাঠযোগ্য ফরম্যাটে দেখতে চান, তবে আপনি Date
ক্লাস ব্যবহার করে এই সময়টি ফরম্যাট করতে পারেন।
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
public class LastModifiedFormattedExample {
public static void main(String[] args) {
File file = new File("example.txt");
long lastModifiedTime = FileUtils.lastModified(file);
// Format the last modified time to a readable date
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
String formattedDate = sdf.format(new Date(lastModifiedTime));
System.out.println("Last modified time: " + formattedDate);
}
}
File Size হল একটি ফাইলের আকার, যা সাধারণত বাইটে (bytes) পরিমাপ করা হয়। ফাইল সাইজ জানাটা গুরুত্বপূর্ণ হতে পারে, যেমন ফাইল লোড করার পূর্বে সাইজ যাচাই করা বা আর্কাইভ করার সময় সাইজ হিসাব করা।
FileUtils ক্লাসে sizeOf()
মেথডটি ফাইলের সাইজ বের করার জন্য ব্যবহৃত হয়।
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
public class FileSizeExample {
public static void main(String[] args) {
// Specify the file
File file = new File("example.txt");
// Get the file size
long fileSize = FileUtils.sizeOf(file);
// Print the file size
System.out.println("File size: " + fileSize + " bytes");
}
}
এখানে:
FileUtils.sizeOf(file)
মেথডটি ফাইলের সাইজ বের করার জন্য ব্যবহৃত হয় এবং এটি bytes হিসেবে সাইজ রিটার্ন করে।ফাইল সাইজ সাধারণত bytes-এ পাওয়া যায়, তবে আপনি চাইলে এই সাইজকে KB, MB বা GB-এ রূপান্তর করতে পারেন।
import org.apache.commons.io.FileUtils;
import java.io.File;
public class FileSizeConversionExample {
public static void main(String[] args) {
File file = new File("example.txt");
// Get the file size in bytes
long fileSizeInBytes = FileUtils.sizeOf(file);
// Convert file size to KB, MB, and GB
double fileSizeInKB = fileSizeInBytes / 1024.0;
double fileSizeInMB = fileSizeInKB / 1024.0;
double fileSizeInGB = fileSizeInMB / 1024.0;
// Print the sizes
System.out.println("File size in bytes: " + fileSizeInBytes);
System.out.println("File size in KB: " + fileSizeInKB);
System.out.println("File size in MB: " + fileSizeInMB);
System.out.println("File size in GB: " + fileSizeInGB);
}
}
এখানে:
FileUtils.sizeOf(file)
ব্যবহার করে ফাইলের সাইজ বের করা হয়েছে, এবং তারপর bytes থেকে KB, MB, এবং GB-এ রূপান্তর করা হয়েছে।ফিচার | FileUtils.lastModified() | FileUtils.sizeOf() |
---|---|---|
ফাংশন | ফাইলের last modified time বের করা | ফাইলের সাইজ বের করা |
ফিরিয়ে দেয় | long টাইপ, যা milliseconds হিসেবে সময় দেয় | long টাইপ, যা bytes হিসেবে সাইজ দেয় |
ব্যবহার | ফাইলের সর্বশেষ পরিবর্তিত সময় জানার জন্য | ফাইলের আকার বা সাইজ জানতে ব্যবহৃত হয় |
ফলাফল | long টাইপের সময় (milliseconds) | long টাইপের সাইজ (bytes) |
Apache Commons IO লাইব্রেরির FileUtils ক্লাসের lastModified() এবং sizeOf() মেথডগুলি Java-তে ফাইলের Last Modified Time এবং File Size সহজভাবে বের করার জন্য অত্যন্ত কার্যকরী। lastModified() মেথডটি একটি ফাইলের শেষ পরিবর্তনের সময় প্রদান করে, যা milliseconds আকারে হয়, এবং sizeOf() মেথডটি ফাইলের আকার (বাইটে) প্রদান করে। এই মেথডগুলো ফাইল সম্পর্কিত বিভিন্ন কার্যক্রম যেমন সিঙ্ক্রোনাইজেশন, ফাইল আপডেট চেক, বা ফাইল আর্কাইভিংয়ের জন্য খুবই গুরুত্বপূর্ণ।
Apache Commons IO লাইব্রেরি ফাইল ম্যানিপুলেশন এবং ইনপুট/আউটপুট সম্পর্কিত অন্যান্য কার্যকলাপের জন্য কার্যকরী সরঞ্জাম সরবরাহ করে, তবে এটি metadata management সম্পর্কিত কার্যক্রমেও সাহায্য করতে পারে। ফাইলের metadata এমন তথ্য যা ফাইলের নিজস্ব বৈশিষ্ট্য বা এর সাথে সম্পর্কিত কোনো অতিরিক্ত তথ্য ধারণ করে, যেমন ফাইলের আকার, তারিখ, মালিক, অনুমতি, এবং আরও অনেক কিছু। এই তথ্য সাধারণত ফাইল সিস্টেমের অংশ হয়, তবে Apache Commons IO লাইব্রেরি ব্যবহার করে আপনি এই মেটাডেটা ম্যানিপুলেশন এবং পরিচালনা করতে পারেন।
এখানে Apache Commons IO ব্যবহার করে Advanced Metadata Management Techniques নিয়ে আলোচনা করা হবে।
ফাইলের মেটাডেটা মূলত ফাইলের কিছু অতিরিক্ত বৈশিষ্ট্য যেগুলি ফাইল সিস্টেমে সংরক্ষিত থাকে। যেমন, ফাইলের আকার, সংশোধনের সময়, এবং অ্যাক্সেস সময় ইত্যাদি।
Apache Commons IO লাইব্রেরি দিয়ে কিছু সাধারণ মেটাডেটা অ্যাক্সেস করা সম্ভব, যেমন ফাইলের আকার, সংশোধন তারিখ ইত্যাদি।
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
public class FileMetadataExample {
public static void main(String[] args) {
// ফাইল অবজেক্ট তৈরি
File file = new File("example.txt");
// ফাইলের আকার (বাইটে)
long fileSize = FileUtils.sizeOf(file);
System.out.println("ফাইলের আকার: " + fileSize + " বাইট");
// ফাইলের সংশোধন তারিখ
long lastModified = file.lastModified();
System.out.println("ফাইলের সংশোধন তারিখ: " + lastModified);
// ফাইলের পাথ
String filePath = file.getAbsolutePath();
System.out.println("ফাইলের পূর্ণ পাথ: " + filePath);
}
}
FileUtils.sizeOf(file)
: ফাইলের আকার (size) বাইটে রিটার্ন করে।file.lastModified()
: ফাইলটির সংশোধন সময় রিটার্ন করে, যা Unix timestamp হিসেবে হয়।file.getAbsolutePath()
: ফাইলটির পূর্ণ পাথ রিটার্ন করে।ফাইলের আকার: 1024 বাইট
ফাইলের সংশোধন তারিখ: 1635243900000
ফাইলের পূর্ণ পাথ: /path/to/example.txt
ফাইল পারমিশন একটি ফাইলের সাথে সম্পর্কিত নিরাপত্তা বৈশিষ্ট্য যা ফাইলটি পড়া, লেখা, এবং এক্সিকিউট করা যাবে কিনা তা নির্ধারণ করে। Apache Commons IO লাইব্রেরি সোজা ভাবে পারমিশন চেক বা সেট করার জন্য সরাসরি কোন মেথড সরবরাহ করে না, তবে আপনি সাধারণ File
ক্লাসের সাহায্যে ফাইলের পারমিশন যাচাই এবং পরিবর্তন করতে পারেন।
import java.io.File;
public class FilePermissionExample {
public static void main(String[] args) {
File file = new File("example.txt");
// ফাইলের পারমিশন চেক করা
System.out.println("ফাইলটি পড়ার অনুমতি আছে: " + file.canRead());
System.out.println("ফাইলটি লেখার অনুমতি আছে: " + file.canWrite());
System.out.println("ফাইলটি এক্সিকিউট করার অনুমতি আছে: " + file.canExecute());
// পারমিশন পরিবর্তন
boolean canWrite = file.setWritable(true); // লেখার অনুমতি দেওয়া
System.out.println("লেখার অনুমতি পরিবর্তন করা হয়েছে: " + canWrite);
}
}
file.canRead()
, file.canWrite()
, file.canExecute()
: ফাইলের পড়া, লেখা এবং এক্সিকিউট করার পারমিশন চেক করে।file.setWritable(true)
: ফাইলের লেখার অনুমতি পরিবর্তন করে।ফাইলটি পড়ার অনুমতি আছে: true
ফাইলটি লেখার অনুমতি আছে: true
ফাইলটি এক্সিকিউট করার অনুমতি আছে: false
লেখার অনুমতি পরিবর্তন করা হয়েছে: true
ফাইলের modification timestamp এবং creation timestamp ফাইলের মেটাডেটা সম্পর্কিত অত্যন্ত গুরুত্বপূর্ণ তথ্য। Apache Commons IO এ এসব টাইমস্ট্যাম্প ম্যানেজ করার জন্য সরাসরি কোন মেথড নেই, তবে আপনি File
ক্লাসের মাধ্যমে এগুলি পেতে এবং সেট করতে পারেন।
import java.io.File;
public class FileTimestampExample {
public static void main(String[] args) {
File file = new File("example.txt");
// ফাইলের সংশোধন তারিখ (timestamp) পাওয়া
long lastModified = file.lastModified();
System.out.println("ফাইলের সংশোধন টাইমস্ট্যাম্প: " + lastModified);
// নতুন সংশোধন টাইমস্ট্যাম্প সেট করা
boolean isModified = file.setLastModified(System.currentTimeMillis());
System.out.println("ফাইলের সংশোধন টাইমস্ট্যাম্প আপডেট করা হয়েছে: " + isModified);
}
}
file.lastModified()
: ফাইলের সর্বশেষ সংশোধনের টাইমস্ট্যাম্প রিটার্ন করে।file.setLastModified()
: ফাইলের সংশোধন টাইমস্ট্যাম্প সেট করে।ফাইলের সংশোধন টাইমস্ট্যাম্প: 1635243900000
ফাইলের সংশোধন টাইমস্ট্যাম্প আপডেট করা হয়েছে: true
যদি আপনি বিশেষ ধরনের মেটাডেটা, যেমন Exif data বা PDF metadata এক্সট্র্যাক্ট করতে চান, তাহলে আপনাকে Apache Commons IO এর বাইরেও অন্যান্য লাইব্রেরি ব্যবহার করতে হতে পারে। উদাহরণস্বরূপ, Apache Tika ব্যবহার করে আপনি ফাইলের metadata এক্সট্র্যাক্ট করতে পারেন।
FileFilter এবং FilenameUtils সহ Apache Commons IO ব্যবহার করে আপনি ফাইলের নাম, এক্সটেনশন, আকার বা সংশোধনের তারিখের উপর ভিত্তি করে ফাইল ফিল্টার করতে পারেন। আপনি যদি মেটাডেটার ওপর ভিত্তি করে ফাইল ফিল্টার করতে চান, তবে নিম্নলিখিত কৌশল ব্যবহার করতে পারেন।
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.filefilter.FileFilterUtils;
import java.io.File;
import java.util.Collection;
public class FileMetadataFilterExample {
public static void main(String[] args) {
File directory = new File("C:/exampleDirectory");
// ফাইল ফিল্টার তৈরি (মাত্র .txt এক্সটেনশনের ফাইল)
Collection<File> files = FileUtils.listFiles(directory, FileFilterUtils.suffixFileFilter(".txt"), null);
// ফিল্টার করা ফাইলগুলো প্রিন্ট করা
for (File file : files) {
System.out.println("ফিল্টার করা ফাইল: " + file.getName());
}
}
}
FileFilterUtils.suffixFileFilter(".txt")
: এটি একটি ফাইল ফিল্টার তৈরি করে যা শুধুমাত্র .txt
এক্সটেনশনযুক্ত ফাইল গুলোকে নির্বাচন করে।FileUtils.listFiles()
: এটি ডিরেক্টরি থেকে ফাইল ফিল্টারিং করে কেবলমাত্র নির্বাচিত ফাইল গুলো রিটার্ন করে।ফিল্টার করা ফাইল: example1.txt
ফিল্টার করা ফাইল: example2.txt
Apache Commons IO ফাইল এবং ডিরেক্টরি সম্পর্কিত metadata management এবং file manipulation এর জন্য খুবই শক্তিশালী সরঞ্জাম সরবরাহ করে। FileUtils এবং FilenameUtils সহ অন্যান্য ক্লাস ব্যবহার করে আপনি ফাইলের কন্টেন্ট, আকার, সংশোধন তারিখ, পারমিশন, এবং অন্যান্য মেটাডেটা সহজে ম্যানেজ করতে পারেন। এটি ফাইল ম্যানিপুলেশন, ফিল্টারিং এবং মেটাডেটা এক্সট্র্যাকশনকে অনেক সহজ করে তোলে, যা Java ডেভেলপারদের জন্য খুবই কার্যকরী।
common.read_more